package com.itlong.cloud.property.dao;

import com.itlong.cloud.POJO.DTO.property.DeviceAiCameraInfoDTO;
import com.itlong.cloud.POJO.VO.property.PropertyDeviceAiCameraInfoVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * <desc>
 *
 * </desc>
 *
 * @createDate2021/5/28
 **/
@Mapper
@Repository
public interface IPropertyAICameraDao {

    /**
     * <desc>
     *      添加AI摄像头
     * </desc>
     *
     * @param params 数据参数
     * @return
     * @author Juguang.S
     * @createDate 2021/06/02
     */
    Integer save(Map<String, Object> params);

    /**
     * <desc>
     *      修改AI摄像头
     * </desc>
     *
     * @param params 数据参数
     * @return
     * @author Juguang.S
     * @createDate 2021/06/02
     */
    Integer update(Map<String, Object> params);

    /**
     * <desc>
     *      校验电梯是否已绑定其它摄像头
     * </desc>
     *
     * @param cameraInfoDTO 数据参数
     * @return
     * @author Juguang.S
     * @createDate 2021/06/02
     */
    Integer checkElevatorIsBind(DeviceAiCameraInfoDTO cameraInfoDTO);

    /**
     * <desc>
     *      根据设备ID获取AI摄像头详情
     * </desc>
     *
     * @param cameraInfoDTO 摄像头相关请求入参DTO
     * @return
     * @author Juguang.S
     * @createDate 2021/06/02
     */
    PropertyDeviceAiCameraInfoVO getAiCameraDetails(DeviceAiCameraInfoDTO cameraInfoDTO);

    /**
     * <desc>
     *      批量删除ai摄像头信息
     * </desc>
     *
     * @param deviceIds 删除设备ID数组
     * @return
     * @author Juguang.S
     * @createDate 2021/06/02
     */
    void batchRemove(@Param("deviceIds") String[] deviceIds);

    /**
     * <desc>
     *      AI摄像头列表
     * </desc>
     *
     * @param params 查询条件
     * @return 数据列表
     * @author Juguang.S
     * @createDate 2021/06/02
     */
    List<PropertyDeviceAiCameraInfoVO> getAiCameraListByPage(Map<String, Object> params);

    /**
     * <desc>
     *      根据项目编号获取AI摄像头列表 不分页
     * </desc>
     *
     * @param projectId 项目编号
     * @return 数据列表
     * @author Juguang.S
     * @createDate 2021/06/17
     */
    List<PropertyDeviceAiCameraInfoVO> getAiCameraList(String projectId);

    /**
     * <desc>
     *      AI摄像头列表数量
     * </desc>
     *
     * @param params 查询条件
     * @return 数据列表数量
     * @author Juguang.S
     * @createDate 2021/06/02
     */
    Integer getAiCameraListByPageCount(Map<String, Object> params);


    /**
     * <desc>
     *      根据设备ID集合获取AI摄像头详情
     * </desc>
     *
     * @param deviceIds 摄像头ID集合
     * @return
     * @author Juguang.S
     * @createDate 2021/06/03
     */
    List<PropertyDeviceAiCameraInfoVO> getAiCameraDetailsByDeviceIds(@Param("deviceIds") String[] deviceIds);
}
